package com.zmn.brs.business.interfaces.record;

import com.zmn.brs.common.model.mq.OperateRecordMq;
import com.zmn.brs.common.model.mq.StaffOperateRecordMq;
import com.zmn.brs.model.query.record.ObjectQuery;
import com.zmn.brs.model.result.OperateRecordResult;
import com.zmn.common.dto.VtDTO;

import java.util.List;

/**
 * 类描述：员工操作记录业务服务
 *
 * @author xujie
 * @since 2021/03/16 9:59
 */
public interface OperateRecordBService {

    /**
     * 事件触发
     *
     * @param recordMq 操作记录消息
     * @return result
     * @author zhangyao
     * @since 2021/03/16 10:09
     */
    boolean eventTriggering(StaffOperateRecordMq recordMq);

    /**
     * 事件触发
     *
     * @param recordMq 操作记录消息
     * @return true：该操作未触发安全监控，false：该操作已触发安全监控
     * @author xujie
     * @since 2021/04/20 15:48
     * @modifier zhangyao 2021/04/20 修改入参类型为OperateRecordMq
     */
    OperateRecordResult eventTriggering(OperateRecordMq recordMq);

    /**
     * 根据关键字搜索对象，获得下拉列表数据
     * @param query 查询参数
     * @return java.util.List<com.zmn.common.dto.VtDTO>
     * @throws
     * @author zhangyao
     * @since 2021/04/29 17:39
     */
    List<VtDTO> listObjectByQuery(ObjectQuery query);

    /**
     * 移除redis中的对象频次（移除最新的一次计数）
     * @param gate 下单入口，小类
     * @param objectIdentityAttribute 对象身份属性
     * @param objectIdentityAttributeValue 对象身份属性值
     * @param eventCode 事件编码
     * @param thresholdId 阀值id
     * @param minute 分钟
     * @return void
     * @throws
     * @author zhangyao
     * @since 2021/05/12 17:51
     */
    void deleteFrequencyStatistics(Integer gate, Integer objectIdentityAttribute, String objectIdentityAttributeValue,
                                   Integer eventCode, Integer thresholdId, Integer minute);

    /**
     * 根据对象身份属性，获取对象身份属性值
     * @param recordMq 操作内容
     * @param objectIdentityAttribute 对象身份属性
     * @return java.lang.Object
     * @throws
     * @author zhangyao
     * @since 2021/05/12 18:11
     */
    String getObjectIdentityAttributeValue(OperateRecordMq recordMq, Integer objectIdentityAttribute);
}
